/*
 *  Disc Catalog
 *  A little application to quickly catalog and find contents of your
 *  DVD archives.
 *
 *  LabelManager.m
 *  The class that manages the creation and assignment of disc labels. *
 *
 *  Created by Nicola Gigante on 26/12/08.
 *  Copyright (C) 2008  Nicola Gigante
 *
 *  This program is free software: you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License as published by
 *  the Free Software Foundation, either version 3 of the License, or
 *  (at your option) any later version.
 *
 *  This program is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */

#import "LabelManager.h"


@implementation LabelManager

@synthesize labelPrefix, hexLabels, labelDigits, lastLabelValue, generatedLabel;

- (id) init
{
	self = [super init];
	
	NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
	
	self.labelPrefix = [defaults stringForKey:@"labelPrefix"];
	self.hexLabels = [defaults boolForKey:@"hexLabels"];
	self.labelDigits = [defaults integerForKey:@"labelDigits"];
	self.lastLabelValue = 0;
	
	return self;
}

- (id) initWithCoder:(NSCoder *)decoder
{
	self = [super init];
	
	self.labelPrefix = [decoder decodeObjectForKey:@"labelPrefix"];
	self.hexLabels = [decoder decodeBoolForKey:@"hexLabels"];
	self.labelDigits = [decoder decodeIntForKey:@"labelDigits"];
	self.lastLabelValue = [decoder decodeIntForKey:@"lastLabelValue"];
	
	return self;
}

- (void) encodeWithCoder:(NSCoder *)encoder
{
	[encoder encodeObject:self.labelPrefix forKey:@"labelPrefix"];
	[encoder encodeBool:self.hexLabels forKey:@"hexLabels"];
	[encoder encodeInt:self.labelDigits forKey:@"labelDigits"];
	[encoder encodeInt:self.lastLabelValue forKey:@"lastLabelValue"];
}

- (NSString *) formatLabel: (unsigned)labelValue
{
	NSString *format = [NSString stringWithFormat:@"%%@%%0%d%c", self.labelDigits, (self.hexLabels ? 'X' : 'd')];
	NSString *label = [NSString stringWithFormat:format, labelPrefix, labelValue];
	
	return label;
}

- (void) generateLabel
{
	self.lastLabelValue = self.lastLabelValue + 1;
	generatedLabel = [self formatLabel: self.lastLabelValue];
}

@end
